package com.zhuanzhuan.hero.user.service;

import com.zhuanzhuan.hero.user.dto.RelateUserGroupLabelDTO;
import com.zhuanzhuan.hero.user.vo.label.UserGroupLabelPageVO;
import com.zhuanzhuan.hero.user.vo.label.UserGroupLabelVO;

import java.util.List;
import java.util.Map;

/**
 * @ClassName IUserGroupService
 * @Description
 * @Author hanjunjun
 * @Date 2024/6/26 10:59
 */
public interface IUserGroupService {

    /**
     * 新增一个分组标签
     *
     * @param uid
     * @param groupName
     * @return void
     * @author  hanjunjun
     * @date 2024/6/26
     **/
    UserGroupLabelVO addUserGroupLabel(Long uid, String groupName);

    /**
     * 查询fronUid给toUid的分组、备注
     *
     * @param fromUid
     * @param toUid
     * @return void
     * @author  hanjunjun
     * @date 2024/6/26
     **/
    UserGroupLabelPageVO queryGroupRelation(Long fromUid, Long toUid);

    /**
     * 关联分组标签、设置备注
     *
     * @param fromUid
     * @param relateUserGroupLabelDTO
     * @return void
     * @author  hanjunjun
     * @date 2024/6/26
     **/
    void relateUserGroupLabels(Long fromUid, RelateUserGroupLabelDTO relateUserGroupLabelDTO);

    /**
     * 删除分组标签，同时删除和用户的关联关系
     *
     * @param uid
     * @param delLabelIds
     * @return void
     * @author  hanjunjun
     * @date 2024/6/26
     **/
    void delUserGroupLabels(Long uid, List<Long> delLabelIds);

    /**
     * 查询分组标签
     * @param fromUid
     * @param toUid
     * @return
     */
    List<String> getGroupLabels(Long fromUid, Long toUid);

    /**
     * 批量查询分组标签
     * @param fromUid
     * @param toUids
     * @return
     */
    Map<Long,List<String>> getGroupLabels(Long fromUid, List<Long> toUids);

}
